package com.draby.starfantasymaze.utils;

import com.draby.starfantasymaze.dto.Achievement;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;
import java.util.List;

public class JsonUtil {
    private static final Gson gson;

    /* 类首次加载的时候执行，初始化 gson 对象 */
    static {
        GsonBuilder builder = new GsonBuilder();
        builder.serializeNulls()        // null 也进行序列化
                .setPrettyPrinting()        // 设置 json 格式更美观
                .setDateFormat(DateFormatUtil.getDefaultFormatter1().toPattern());      // 设置时间格式化方式
        gson = builder.create();
    }

    /**
     * 将成就对象列表转为 json 字符串
     * @param object 成就列表
     * @return 序列化后的 json 字符串
     */
    public static String convertToJson(Object object) {
        Type type = object.getClass();
        return gson.toJson(object, type);
    }

    /**
     * 将 json 字符串解析为成就列表
     * @param content json 字符串
     * @return 反序列化后的成就列表
     */
    public static List<Achievement> getAchievementsFromJson(String content) {
        Type type = new TypeToken<List<Achievement>>(){}.getType();
        return gson.fromJson(content, type);
    }
}
